package com.qin.service;

import java.util.List;

import com.qin.entity.BookCategory;

/**
 * 图书分类服务接口
 * @author BestRiven
 *
 */
public interface BookCategoryService {
	
	/**
	 * 插入图书分类
	 * @param bookCategory 要插入的图书分类实体类
	 * @return 返回自增主键
	 */
	public Long insertBookCategory(BookCategory bookCategory);
	
	/**
	 * 逻辑删除图书分类，根据id
	 * @param id 要删除图书分类的id
	 * @return 影响行数
	 */
	public int deleteBookCategory(Long id);
	
	/**
	 * 修改图书分类
	 * @param id 要修改图书分类的id
	 * @param bookCategory 要修改图书分类的信息
	 * @return 影响行数
	 */
	public int updateBookCategory(Long id,BookCategory bookCategory);
	
	/**
	 * 查询图书，根据id
	 * @param id 要查询图书的id
	 * @return 图书实体类
	 */
	public BookCategory getBookCategoryById(Long id);
	
	
	/**
	 * 通过父id来查询图书分类
	 * @param id 图书分类的父id
	 * @return 父id下的所有图书分类
	 */
	public List<BookCategory> queryBookCategoryByPId(Long id);
	
	/**
	 * 通过分类等级来查询图书分类
	 * @param level 图书分类的等级
	 * @return 该等级下的所有图书分类
	 */
	public List<BookCategory> queryBookCategoryByCLevel(Integer level); 
	
	/**
	 * 把传入的图书分类递归转换成图书分类树
	 * @param bookCategories 传入的图书分类
	 * @return 图书分类，以树的结构
	 */
	public List<BookCategory> getBookCategoryToLevel(List<BookCategory> bookCategories);
	
	/**
	 * 重载方法，默认去数据库查所有
	 * @return 图书分类，以树的结构
	 */
	public List<BookCategory> getBookCategoryToLevel();
	
	/**
	 * 查询所有图书
	 * @return 所有图书，用List封装
	 */
	public List<BookCategory> getAllBookCategories();
}
